JavaScriptã®`find()`ã€ãã¬ãŒã¿ãã«ããŒã®åãçºèŠããŠãã ããããã®ã¬ã€ãã¯ãã°ããŒãã«éçºè ãããŒã¿æ§é å ã®èŠçŽ ãå¹ççã«æ€çŽ¢ã»ååŸããããã®äœ¿çšæ³ãå©ç¹ãå®è·µäŸãç¶²çŸ ããã³ãŒããããã¯ãªãŒã³ã§å¹ççã«ããŸãã
JavaScriptã€ãã¬ãŒã¿ãã«ããŒ`find()`ïŒã°ããŒãã«éçºè åãã®ã¹ããªãŒã èŠçŽ æ€çŽ¢
JavaScriptã®äžçã§ã¯ãããŒã¿ãå¹ççã«æ€çŽ¢ããããšã¯åºæ¬çãªèŠä»¶ã§ããæ±äº¬ã®ãŠãŒã¶ãŒåãã®ãŠã§ããµã€ããæ§ç¯ããå Žåã§ãããªãªããžã£ãã€ãã®é¡§å®¢ã«ãµãŒãã¹ãæäŸããeã³ããŒã¹ãã©ãããã©ãŒã ãéçºããå Žåã§ãããããã¯æ§ã ãªå€§éžã®ãŠãŒã¶ãŒåãã®ã¢ãã€ã«ã¢ããªã±ãŒã·ã§ã³ãäœæããå Žåã§ããããŒã¿æ§é å ããç¹å®ã®èŠçŽ ãè¿ éã«èŠã€ãåºãæ¹æ³ãçè§£ããããšã¯éåžžã«éèŠã§ããJavaScriptã®çµã¿èŸŒã¿ã€ãã¬ãŒã¿ãã«ããŒã§ãã`find()`ã¯ããã®åé¡ã«å¯ŸããŠåŒ·åãã€ãšã¬ã¬ã³ããªè§£æ±ºçãæäŸããŸãã
`find()`ã¡ãœãããšã¯ïŒ
find()ã¡ãœããã¯ãé
åå
ã§æäŸããããã¹ã颿°ãæºããæåã®èŠçŽ ãèŠã€ããããã«èšèšãããJavaScriptã®ã€ãã¬ãŒã¿ãã«ããŒã§ããé
åã®èŠçŽ ãå埩åŠçããåèŠçŽ ã«å¯ŸããŠãã¹ã颿°ãå®è¡ããŸãããã¹ã颿°ãçãšè©äŸ¡ãããå€ïŒtruthy valueïŒãè¿ããšããã«ãfind()ã¯ãã®èŠçŽ ãå³åº§ã«è¿ããå埩ã忢ããŸãããã¹ã颿°ãæºããèŠçŽ ããªãå Žåãfind()ã¯undefinedãè¿ããŸãã
find()ã®äž»ãªå©ç¹ã¯ãã³ãŒããç°¡çŽ åããå¯èªæ§ãåäžãããèœåã«ãããJavaScriptã³ãŒãããã管çããããããšã©ãŒãçºçãã«ããããŸããç¹ã«ãé
åãå埩å¯èœãªãªããžã§ã¯ããæ±ãå Žåãããã¹ãŠã®äžèŽèŠçŽ ã§ã¯ãªããäžèŽããèŠçŽ ã1ã€ã ãå¿
èŠãªç¶æ³ã§åœ¹ç«ã¡ãŸãã
æ§æãšäœ¿çšæ³
find()ã䜿çšããããã®åºæ¬çãªæ§æã¯éåžžã«ã·ã³ãã«ã§ãïŒ
array.find(callback(element[, index[, array]])[, thisArg])
array: æ€çŽ¢å¯Ÿè±¡ã®é åãcallback: é åã®åèŠçŽ ããã¹ããã颿°ã以äžã®åŒæ°ãåãåããŸãïŒelement: é åå ã§çŸåšåŠçäžã®èŠçŽ ãindex(ãªãã·ã§ã³): é åå ã§çŸåšåŠçäžã®èŠçŽ ã®ã€ã³ããã¯ã¹ãarray(ãªãã·ã§ã³): `find()`ãåŒã³åºãããé åãã®ãã®ãthisArg(ãªãã·ã§ã³): `callback`ãå®è¡ããéã«`this`ãšããŠäœ¿çšããå€ã
ããã€ãã®äŸã§èª¬æããŸãããïŒ
äŸ1ïŒé åããæ°å€ãèŠã€ãã
æ°å€ã®é åãããã10ãã倧ããæåã®æ°å€ãèŠã€ããããšããŸãïŒ
const numbers = [5, 8, 12, 15, 2, 9];
const foundNumber = numbers.find(number => number > 10);
console.log(foundNumber); // Output: 12
ãã®äŸã§ã¯ãfind()ã¯numbersé
åãå埩åŠçããŸããã³ãŒã«ããã¯é¢æ°ïŒnumber => number > 10ïŒã¯åæ°å€ããã¹ããã10ãã倧ãããã©ããã調ã¹ãŸãããã®æ¡ä»¶ãæºããæåã®æ°å€ã¯12ãªã®ã§ãfind()ã¯12ãè¿ããŸããé
åã®æ®ãã®æ°å€ã¯ãã§ãã¯ãããŸããã
äŸ2ïŒãªããžã§ã¯ãã®é åãããªããžã§ã¯ããèŠã€ãã
åãªããžã§ã¯ãã補åã衚ããªããžã§ã¯ãã®é åããããšããŸããç¹å®ã®IDãæã€è£œåãèŠã€ãããå ŽåïŒ
const products = [
{ id: 1, name: 'Laptop', price: 1200, currency: 'USD' },
{ id: 2, name: 'Mouse', price: 25, currency: 'USD' },
{ id: 3, name: 'Keyboard', price: 75, currency: 'USD' }
];
const foundProduct = products.find(product => product.id === 2);
console.log(foundProduct); // Output: { id: 2, name: 'Mouse', price: 25, currency: 'USD' }
ããã§ãã³ãŒã«ããã¯é¢æ°ã¯å補åãªããžã§ã¯ãã®idããããã£ããã§ãã¯ããŸããidã2ã«çãããªããžã§ã¯ããèŠã€ãããšãfind()ã¯ãã®ãªããžã§ã¯ããè¿ããŸãã
äŸ3ïŒ`undefined`ã®è¿ãå€ã®åŠç
ã³ãŒã«ããã¯é¢æ°å
ã®æ¡ä»¶ãæºããèŠçŽ ããªãå Žåãfind()ã¯undefinedãè¿ããŸãïŒ
const numbers = [1, 2, 3, 4, 5];
const foundNumber = numbers.find(number => number > 10);
console.log(foundNumber); // Output: undefined
ã³ãŒãå
ã§ãšã©ãŒãé²ãããã«ãundefinedã®è¿ãå€ãé©åã«åŠçããããšãäžå¯æ¬ ã§ããæ¡ä»¶æãnullåäœæŒç®åïŒ??ïŒã䜿çšããŠãèŠçŽ ãèŠã€ãã£ããã©ããã確èªã§ããŸãã
`find()`ã䜿çšããå©ç¹
find()ã¡ãœããã¯ãç¹ã«ã°ããŒãã«ãªãªãŒãã£ãšã³ã¹ã倿§ãªããŒã¿ã»ãããæ±ãéã«ãä»ã®ããŒã¿æ§é æ€çŽ¢æ¹æ³ã«æ¯ã¹ãŠããã€ãã®å©ç¹ãæäŸããŸãïŒ
- å¯èªæ§:
find()ã¯ã³ãŒããããç°¡æœã§çè§£ããããããŸããç¹å®ã®åºæºãæºããåäžã®èŠçŽ ãæ€çŽ¢ãããšããæå³ãæç¢ºã«äŒããŸããããã«ãããã³ãŒãã®ä¿å®æ§ãåäžããç°ãªãèæ¯ãåœç±ã®éçºè ãã³ãŒãã®ç®çãè¿ éã«ææ¡ã§ããããã«ãªããŸãã - å¹çæ§:
find()ã¯äžèŽããèŠçŽ ãèŠã€ãããšããã«å埩ã忢ããŸããããã¯ãç¹ã«å€§èŠæš¡ãªããŒã¿ã»ãããæ±ãå Žåãã«ãŒããä»ã®ã¡ãœããã䜿çšããŠé åå šäœãå埩åŠçãããããå€§å¹ ã«å¹ççã§ããäŸãã°ãã€ã³ãã®ãŠãŒã¶ãŒãéåžžã«å€§ããªeã³ããŒã¹ã«ã¿ãã°ã§ç¹å®ã®è£œåãæ€çŽ¢ããå Žåãfind()ã¯æ€çŽ¢ããã»ã¹ãæé©åã§ããŸãã - ç°¡æœã: èšè¿°ããå¿ èŠã®ããã³ãŒãéãåæžããããã¯ãªãŒã³ã§ã³ã³ãã¯ããªã³ãŒãã«ã€ãªãããŸããããã¯ãåœéçãªãœãããŠã§ã¢éçºãããžã§ã¯ãã§äžè¬çãªãä»ã®éçºè ãšã®å ±åäœæ¥ãå€§èŠæš¡ãªã³ãŒãããŒã¹ã®ç®¡çã«ãããŠç¹ã«éèŠã§ãã
- ãã¥ãŒããŒã·ã§ã³ã®åé¿: å
ã®é
åã倿Žããã¡ãœããïŒäŸïŒç¹å®ã®æèã§ã®
spliceïŒãšã¯ç°ãªããfind()ã¯å ã®ããŒã¿æ§é ã倿ŽããŸãããããã¯ãããŒã¿ãäžçäžã®æ§ã ãªã·ã¹ãã ãã¢ããªã±ãŒã·ã§ã³ã§å ±æã»æ¶è²»ãããå Žåã«éèŠãªãããŒã¿ã®æŽåæ§ãç¶æããäºæããªãå¯äœçšãé¿ããããã«äžå¯æ¬ ã§ãã
ä»ã®å埩ã¡ãœãããšã®æ¯èŒ
find()ã¯åŒ·åã§ãããä»ã®äžè¬çãªJavaScripté
åå埩ã¡ãœãããšã®éããçè§£ããããšãéèŠã§ãïŒ
`filter()`
filter()ã¯ãã¹ã颿°ãæºãã*ãã¹ãŠ*ã®èŠçŽ ãå«ã*æ°ãã*é
åãè¿ããŸãããfind()ã¯ãã¹ã颿°ãæºãã*æåã®*èŠçŽ ã®ã¿ãè¿ããŸããäžèŽãããã¹ãŠã®èŠçŽ ãå¿
èŠãªå Žåã¯filter()ã䜿çšããæåã®äžèŽã®ã¿ãå¿
èŠãªå Žåã¯find()ã®æ¹ãå¹ççã§ãã
const numbers = [1, 2, 3, 4, 5, 2];
const filteredNumbers = numbers.filter(number => number === 2);
console.log(filteredNumbers); // Output: [2, 2]
const foundNumber = numbers.find(number => number === 2);
console.log(foundNumber); // Output: 2
`forEach()`
forEach()ã¯é
åã®ãã¹ãŠã®èŠçŽ ãå埩åŠçããåèŠçŽ ã«å¯ŸããŠæäŸããã颿°ãå®è¡ããŸããå€ãè¿ãããäž»ã«å¯äœçšïŒäŸïŒã³ã³ãœãŒã«ãžã®ãã°åºåãDOMã®æŽæ°ïŒã«äœ¿çšãããŸããfind()ã¯ç¹å®ã®èŠçŽ ãè¿ãããã«èšèšãããŠãããäžèŽãèŠã€ãããšå埩ã忢ãããããèŠçŽ ã®ååŸã«é©ããŠããŸãã`forEach`ã«ã¯ååŸ©ãæ©æã«ãäžæãããã¡ã«ããºã ããããŸããã
`some()`
some()ã¯é
åå
ã®å°ãªããšã1ã€ã®èŠçŽ ããã¹ã颿°ãæºãããã©ããããã§ãã¯ããŸããããŒã«å€ïŒå°ãªããšã1ã€ã®èŠçŽ ãäžèŽããã°trueãããã§ãªããã°falseïŒãè¿ããŸãã find()ã¯äžèŽããã°èŠçŽ èªäœããäžèŽããªããã°undefinedãè¿ããŸããååšãã§ãã¯ã«ã¯some()ããååŸã«ã¯find()ãçæ³çã§ãã
const numbers = [1, 2, 3, 4, 5];
const hasEven = numbers.some(number => number % 2 === 0);
console.log(hasEven); // Output: true
const foundEven = numbers.find(number => number % 2 === 0);
console.log(foundEven); // Output: 2
`findIndex()`
findIndex()ã¯find()ã«äŒŒãŠããŸãããèŠçŽ èªäœãè¿ã代ããã«ããã¹ã颿°ãæºããæåã®èŠçŽ ã®*ã€ã³ããã¯ã¹*ãè¿ããŸããäžèŽããèŠçŽ ããªãå Žåã¯-1ãè¿ããŸããèŠçŽ ã®å€ãå¿
èŠãªå Žåã¯find()ããé
åå
ã§ã®äœçœ®ãå¿
èŠãªå Žåã¯findIndex()ãé©ããŠããŸãã
const numbers = [1, 2, 3, 4, 5];
const foundIndex = numbers.findIndex(number => number === 3);
console.log(foundIndex); // Output: 2
const foundNumber = numbers.find(number => number === 3);
console.log(foundNumber); // Output: 3
å®è·µçãªãŠãŒã¹ã±ãŒã¹ãšã°ããŒãã«ãªäŸ
find()ã¯ãæ§ã
ãªã°ããŒãã«ã·ããªãªã§å¿çšã§ããæ±çšæ§ã®é«ãããŒã«ã§ãïŒ
- Eã³ããŒã¹: 補åã«ã¿ãã°å
ã§IDãSKUã«åºã¥ããŠç¹å®ã®è£œåãæ€çŽ¢ãããäŸãã°ããã©ãžã«ã§éå¶ãããŠãããªã³ã©ã€ã³ã¹ãã¢ã¯ã顧客ãèŠæ±ãã補åãå¹ççã«èŠã€ããããã«
find()ã䜿çšã§ããŸãã - ãŠãŒã¶ãŒèªèšŒ: ããŒã¿ããŒã¹å ã§äžèŽãããŠãŒã¶ãŒåãã¡ãŒã«ã¢ãã¬ã¹ãæã€ãŠãŒã¶ãŒã¢ã«ãŠã³ãããã§ãã¯ãããããã¯äžçäžã®ãŠãŒã¶ãŒã«ãµãŒãã¹ãæäŸããã¢ããªã±ãŒã·ã§ã³ã«é¢é£ããŸãã
- ããŒã¿å¯èŠå: ããŒã¿ã»ããããããŒã¿ãã€ã³ããååŸããŠãã£ãŒãã«è¡šç€ºãããããã¯ããšãŒããããã¢ãžã¢ã®ã¯ã©ã€ã¢ã³ãã«ãµãŒãã¹ãæäŸããã°ããŒãã«ãªéèåæãã©ãããã©ãŒã ã«é©çšã§ããŸãã
- æ§æç®¡ç: ã¢ããªã±ãŒã·ã§ã³å ã§ç¹å®ã®æ§æèšå®ãèŠã€ãããããã¯ãç°ãªãã°ããŒãã«å°åã«é©å¿ããå¿ èŠãããã¢ããªã±ãŒã·ã§ã³ã«ç¹ã«åœ¹ç«ã¡ãŸãã
- å€èšèªãµããŒã: ãŠãŒã¶ãŒã®èšèªèšå®ã«åºã¥ããŠæ£ãã翻蚳æååãèŠã€ããã倿§ãªèšèªã®ãŠãŒã¶ãŒã«å¯Ÿå¿ããæ
è¡äºçŽãµã€ãã¯ã
find()ã䜿çšããŠããŒã«ã©ã€ãºãããã³ã³ãã³ããå¹ççã«ååŸã§ããŸãã - åœéå (i18n):
find()ã¯ãè€æ°èšèªããµããŒãããã¢ããªã±ãŒã·ã§ã³ã®i18nãªããžã§ã¯ãå ã§ãç¹å®ã®ããŒã«äžèŽãã翻蚳ãèŠã€ããããã«äœ¿çšã§ããŸããäŸãã°ãè±èªãã¹ãã€ã³èªããã©ã³ã¹èªãäžåœèªããµããŒãããã¢ãã€ã«ã¢ããªã±ãŒã·ã§ã³ã¯ãfindã䜿çšããŠç¹å®ã®èšèªã§ã¢ããªã±ãŒã·ã§ã³åã衚瀺ã§ããŸãã
äŸïŒEã³ããŒã¹è£œåæ€çŽ¢ïŒã°ããŒãã«ïŒ
ã«ããããªãŒã¹ãã©ãªã¢ãªã©ãè€æ°ã®åœã§éå¶ãããŠããeã³ããŒã¹ãã©ãããã©ãŒã ãæ³åããŠã¿ãŠãã ãããã¢ããªã±ãŒã·ã§ã³ã¯è£œåãªããžã§ã¯ãã®é
åã䜿çšããŸãããŠãŒã¶ãŒãIDã§è£œåãæ€çŽ¢ãããšãfind()ã䜿çšããŠè£œå詳现ãå¹ççã«ååŸã§ããŸãïŒ
const products = [
{ id: 101, name: 'T-Shirt', price: 25, currency: 'USD' },
{ id: 102, name: 'Jeans', price: 50, currency: 'USD' },
{ id: 103, name: 'Sneakers', price: 75, currency: 'USD' }
];
function getProductById(productId) {
return products.find(product => product.id === productId);
}
const searchedProduct = getProductById(102);
if (searchedProduct) {
console.log(`Product found: ${searchedProduct.name}, Price: ${searchedProduct.price} ${searchedProduct.currency}`);
} else {
console.log('Product not found.');
}
ãã®ã³ãŒãã¹ããããã¯ãæå®ãããproductIdã«äžèŽãã補åãproductsé
åããå¹ççã«æ€çŽ¢ããŸããããã¯ãå€ãã®ã°ããŒãã«ãªå Žæã®ãŠãŒã¶ãŒã«é¢é£ããç°ãªãé貚ã補åã«ã¿ãã°ã«ç°¡åã«é©å¿ã§ããŸãã
äŸïŒãŠãŒã¶ãŒèªèšŒïŒã°ããŒãã«ïŒ
å€ãã®åœã§ãµãŒãã¹ãæäŸãããŠã§ããµã€ãã«ã¯ããŠãŒã¶ãŒèªèšŒãå¿ èŠã§ãã以äžã«ç°¡åãªäŸã瀺ããŸãïŒ
const users = [
{ username: 'john.doe', password: 'password123', email: 'john.doe@example.com' },
{ username: 'jane.smith', password: 'securePass', email: 'jane.smith@example.com' }
];
function authenticateUser(username, password) {
const user = users.find(user => user.username === username && user.password === password);
return user ? user : null; // Return the user object or null if not found.
}
const authenticatedUser = authenticateUser('john.doe', 'password123');
if (authenticatedUser) {
console.log('Authentication successful. Welcome, ' + authenticatedUser.username + '!');
} else {
console.log('Invalid username or password.');
}
ãã®åçŽãªèªèšŒäŸã¯ãfind()ããŠãŒã¶ãŒé
åãããŠãŒã¶ãŒãè¿
éã«èŠã€ããæ¹æ³ã瀺ããŠããŸããè¿ãå€ã¯ããŠãŒã¶ãŒããªã¹ãã«èŠã€ãã£ããã©ããã瀺ããŸãããã®åºæ¬çãªæ©èœã¯ãã°ããŒãã«ãªãªãŒããæã€ã¢ããªã±ãŒã·ã§ã³ã«ãšã£ãŠäžå¯æ¬ ã§ãã
ãã¹ããã©ã¯ãã£ã¹ãšèæ ®äºé
find()ã广çã«æŽ»çšããããã«ã以äžã®ãã¹ããã©ã¯ãã£ã¹ãèæ
®ããŠãã ããïŒ
- æå³ã®ããã³ãŒã«ããã¯é¢æ°ã䜿çšãã: æ€çŽ¢åºæºãæ£ç¢ºã«è¡šããæç¢ºã§ç°¡æœãªã³ãŒã«ããã¯é¢æ°ãèšè¿°ããŸããããã«ãããã³ãŒãã®å¯èªæ§ãåäžããæ€çŽ¢ã®æå³ãçè§£ãããããªããŸãã
- `undefined`ãæ
éã«åŠçãã: ãšã©ãŒãé¿ããããã«ãåžžã«
undefinedã®è¿ãå€ããã§ãã¯ããŠãã ãããæ¡ä»¶æïŒif...elseïŒãnullåäœæŒç®åïŒ??ïŒã䜿çšããŠãæ€çŽ¢åºæºã«äžèŽããèŠçŽ ããªãå ŽåãåŠçããŸããããã¯å ç¢ãªã¢ããªã±ãŒã·ã§ã³éçºã«ãšã£ãŠç¹ã«éèŠã§ãã - å€§èŠæš¡ããŒã¿ã»ããã§ã®ããã©ãŒãã³ã¹ãèæ
®ãã:
find()ã¯äžè¬çã«å¹ççã§ããããã®ããã©ãŒãã³ã¹ã¯ããŒã¿ã»ããã®ãµã€ãºã«åœ±é¿ãããå¯èœæ§ããããŸããéåžžã«å€§ããªããŒã¿ã»ããã®å ŽåãããŒã¿ã®ã€ã³ããã¯ã¹äœæããããæé©åãããæ€çŽ¢ã¢ã«ãŽãªãºã ã®äœ¿çšãªã©ã代æ¿ã¢ãããŒããæ€èšããããšãã§ããŸããå€§èŠæš¡ãªããŒã¿ã»ããã§ã³ãŒãããããã¡ã€ãªã³ã°ããããšãéèŠã§ãã - ããŒã¿ã®æŽåæ§ãç¶æãã:
find()ã¯å ã®é åã倿Žããªãããšãå¿ããªãã§ãã ãããããã¯ãç¹ã«æ§ã ãªå°åãåœã®ç°ãªãã³ã³ããŒãã³ããã¢ããªã±ãŒã·ã§ã³éã§ã¢ã¯ã»ã¹ã»æŽæ°ãããããŒã¿ãæ±ãéã«ãããŒã¿ã®æŽåæ§ã«ãšã£ãŠéèŠã§ãã - ãšã©ãŒãã³ããªã³ã°: ç¡å¹ãªããŒã¿ãæ€çŽ¢åºæºãªã©ãäºæããªãç¶æ³ãé©åã«ç®¡çããããã®ãšã©ãŒãã³ããªã³ã°ã¡ã«ããºã ãå®è£ ããŸããããã«ããããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãåäžããã¢ããªã±ãŒã·ã§ã³ãããå ç¢ã«ãªããŸãã
- ãã¹ã: ãšããžã±ãŒã¹ãç¡å¹ãªããŒã¿ãå«ãæ§ã
ãªå
¥åã§
find()ã®å®è£ ã培åºçã«ãã¹ãããç°ãªãã·ããªãªã倿§ãªãŠãŒã¶ãŒç°å¢ã§æ£ããæ©èœããããšã確èªããŸããåäœãã¹ããäœæããŠãç°ãªãæ€çŽ¢æ¡ä»¶ãé©åã«åŠçãããããšãä¿èšŒã§ããŸãã - ã³ãŒãã¹ã¿ã€ã«: äžè²«ããã³ãŒãã£ã³ã°ã¹ã¿ã€ã«ã¬ã€ãã©ã€ã³ïŒäŸïŒäžè²«ããã€ã³ãã³ãã倿°åã®åœåèŠåïŒã«åŸãããšã§ãå¯èªæ§ãšå ±åäœæ¥ãåäžãããŸããããã¯ãæ§ã ãªåœã®ããŒã ãåå ãããããžã§ã¯ãã«ãšã£ãŠäžå¯æ¬ ã§ãã
é«åºŠãªãã¯ããã¯ãšä»£æ¿æ¡
find()ã¯å€ãã®å Žåååã§ãããæã«ã¯ããé«åºŠãªãã¯ããã¯ã代æ¿ã¢ãããŒããå¿
èŠã«ãªãããšããããŸãïŒ
- ã«ã¹ã¿ã å埩ããžãã¯: éåžžã«è€éãªæ€çŽ¢ã·ããªãªã§ã¯ãã«ãŒããä»ã®é åã¡ãœããã䜿çšããŠã«ã¹ã¿ã å埩ããžãã¯ãå®è£ ããå¿ èŠããããããããŸãããããã«ãããæ€çŽ¢ããã»ã¹ããã詳现ã«å¶åŸ¡ã§ããŸãã
- ã«ãã¯ã¢ããã«ãªããžã§ã¯ãã䜿çšãã: é »ç¹ã«å®è¡ãããã«ãã¯ã¢ããã®å ŽåãããŒã¿ããªããžã§ã¯ãã«æ ŒçŽããïŒäŸïŒè£œåIDãããŒãšããŠäœ¿çšããïŒããšã§ãç¹ã«å€§èŠæš¡ãªããŒã¿ã»ããã®å Žåãããã©ãŒãã³ã¹ãå€§å¹ ã«åäžãããããšãã§ããŸãã
- å€éšã©ã€ãã©ãª: LodashãUnderscore.jsã®ãããªã©ã€ãã©ãªã¯ã远å ã®æ©èœãšæè»æ§ãæäŸãã
_.find()ã®ãããªãŠãŒãã£ãªãã£é¢æ°ãæäŸããŸããããããã»ãšãã©ã®å ŽåãJavaScriptã®ãã€ãã£ãfind()ã¡ãœããã§ååã§ãã - å€§èŠæš¡ããŒã¿çšã®IndexedDB: ãã©ãŠã¶ã§ããŒã«ã«ã«æ°žç¶åãããéåžžã«å€§ããªããŒã¿ã»ãããæ±ãå Žåã¯ãããå¹ççãªã¹ãã¬ãŒãžãšã¯ãšãªã®ããã«IndexedDBã®äœ¿çšãæ€èšããŠãã ããã
ãã©ãŠã¶ã®äºææ§
find()ã¡ãœããã¯ããã¹ãŠã®ææ°ã®ãŠã§ããã©ãŠã¶ã§åºããµããŒããããŠããŸããECMAScript 2015 (ES6) æšæºã®äžéšã§ããå€ããã©ãŠã¶ã§ã¯find()ããã€ãã£ãã«ãµããŒããããŠããªãå ŽåããããŸãããããªãã£ã«ã䜿çšããŠäºææ§ã確ä¿ã§ããŸãã
ããªãã£ã«ã¯ããã©ãŠã¶ããã€ãã£ãã«ãµããŒãããŠããªãæ©èœã®æ©èœæ§ãæäŸããã³ãŒãã¹ããããã§ããfind()ã«ã€ããŠã¯ã以äžã䜿çšã§ããŸãïŒäŸïŒïŒ
if (!Array.prototype.find) {
Object.defineProperty(Array.prototype, 'find', {
value: function(predicate) {
// 1. Let O be ? ToObject(this value).
if (this == null) {
throw new TypeError('this is null or not defined');
}
var o = Object(this);
// 2. Let len be ? ToLength(Get(O, "length")).
var len = o.length >>> 0;
// 3. If IsCallable(predicate) is false, throw a TypeError exception.
if (typeof predicate !== 'function') {
throw new TypeError('predicate must be a function');
}
// 4. If thisArg was supplied, let T be thisArg; else let T be undefined.
var thisArg = arguments[1];
// 5. Let k be 0.
var k = 0;
// 6. Repeat, while k < len
while (k < len) {
// a. Let Pk be ! ToString(k).
// b. Let kValue be ? Get(O, Pk).
// c. Let testResult be ToBoolean(? Call(predicate, T, « kValue, k, O »)).
// d. If testResult is true, return kValue.
var kValue = o[k];
if (predicate.call(thisArg, kValue, k, o)) {
return kValue;
}
// e. Increase k by 1.
k++;
}
// 7. Return undefined.
return undefined;
}
});
}
ãã®ããªãã£ã«ã¯ãfindã¡ãœãããArray.prototypeã«ååšãããã©ããããã§ãã¯ããŸããååšããªãå Žåã¯ãæšæºã®findæ©èœãå®è£
ããæ°ããfindã¡ãœãããå®çŸ©ããŸããããã«ããããã€ãã£ãã®find()ãµããŒãããªãå¯èœæ§ã®ããå€ããã©ãŠã¶ã§ãã³ãŒããæ£ããåäœããããšãä¿èšŒãããŸããäžçäžã®ãŠãŒã¶ãŒããµããŒãããã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããå Žåãããªãã£ã«ã¯äžè²«ãããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãæäŸããããã«äžå¯æ¬ ã§ãã
çµè«
find()ã¡ãœããã¯ãJavaScriptéçºè
ã«ãšã£ãŠéåžžã«è²ŽéãªããŒã«ã§ãããé
åãå埩å¯èœãªãªããžã§ã¯ãå
ã§ã®å¹ççãªèŠçŽ æ€çŽ¢ãå¯èœã«ããŸãããã®ã·ã³ãã«ããå¹çæ§ãå¯èªæ§ã«ãããeã³ããŒã¹ã®è£œåæ€çŽ¢ãããŠãŒã¶ãŒèªèšŒãŸã§ãç¹ã«ãŸããŸãçžäºæ¥ç¶ãé²ãäžçã«ãããŠãæ°å€ãã®ãŠãŒã¹ã±ãŒã¹ã§å¥œãŸããéžæè¢ãšãªã£ãŠããŸãããã®æ§æãå©ç¹ãæœåšçãªå¶éãçè§£ããããšã§ãã°ããŒãã«ãªãªãŒãã£ãšã³ã¹ã«å¹æçã«ãµãŒãã¹ãæäŸãããããã¯ãªãŒã³ã§ãä¿å®ãããããå¹ççãªJavaScriptã³ãŒããæžãããšãã§ããŸãã
undefinedã®è¿ãå€ãé©åã«åŠçããå€§èŠæš¡ãªããŒã¿ã»ããã§ã®ããã©ãŒãã³ã¹ãèæ
®ããã¢ããªã±ãŒã·ã§ã³ã®ç¹å®ã®èŠä»¶ã«åºã¥ããŠæ€çŽ¢æŠç¥ãé©å¿ãããããšãå¿ããªãã§ãã ãããäžçäžã®ãŠãŒã¶ãŒåãã®ã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããã«ã€ããŠãfind()ãšé¢é£ããé
åå埩ã¡ãœãããç¿åŸããããšã§ãå
ç¢ã§å¹ççãªãœãªã¥ãŒã·ã§ã³ãäœæããåãåŸãããŸãã
find()ãä»ã®ã€ãã¬ãŒã¿ãã«ããŒã®åãæŽ»çšããŠããŠãŒã¶ãŒã®å Žæãèæ¯ã«é¢ä¿ãªããã·ãŒã ã¬ã¹ã§ããã©ãŒãã³ã¹ã®é«ããšã¯ã¹ããªãšã³ã¹ãæäŸããã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããŠãã ãããJavaScriptã®ãã¹ããã©ã¯ãã£ã¹ãåžžã«ææ°ã®ç¶æ
ã«ä¿ã¡ãã°ããŒãã«ãªãªãŒãã£ãšã³ã¹ã®é²åããããŒãºã«å¿ããããã«ã¹ãã«ã磚ãç¶ããŠãã ãããããããŒã³ãŒãã£ã³ã°ïŒ